package generic

// Box 定义一个泛型结构体
type Box[T any] struct {
	Value T
}

// GetValue 泛型方法
func (b Box[T]) GetValue() T {
	return b.Value
}

// Adder 定义泛型接口
type Adder[T any] interface {
	Add(a T, b T) T
}

// IntAdder 定义泛型结构体
type IntAdder struct{}

func (i IntAdder) Add(a int, b int) int {
	return a + b
}

func sum[T any, A Adder[T]](a A, x, y T) T {
	return a.Add(x, y)
}
